#ifndef __BUOLA_SCENE_CPERSPECTIVECAMERA_H__
#define __BUOLA_SCENE_CPERSPECTIVECAMERA_H__

#include <buola/scene/ccamera.h>
#include <buola/mat/transformations.h>

namespace buola { namespace scene {

class CPerspectiveCamera : public CCamera
{
    enum EFOVMode
    {
        FOV_VERT,
        FOV_HORZ,
        FOV_MIN,
        FOV_MAX
    };
    
public:
    CPerspectiveCamera();

public:
    void SetFOV(double pFOV,EFOVMode pMode=FOV_VERT);
    void SetClipping(double pNear,double pFar);
    void SetShift(const CPoint_d &pPoint,const CSize_d &pSize=CSize_d(1,1));

private:
    virtual void CalcProjection();
    
private:
    double mFOV;
    EFOVMode mFOVMode;
    double mNear,mFar;
    CPoint_d mShift;
};

/*namespace scene*/ } /*namespace buola*/ }

#endif
